﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Web.Management;

namespace dao.daos
{
    public class InscripcionDao : BaseDao
    {
        public InscripcionDao (string _nombreTabla, string _nombrePk, bool _pkAutonumerica) : base("inscriptos_clases", "id_inscripto_clase", true)
        {

        }

        public InscripcionDao()
        {
        }


        public void Inscripcion(int idClase, int[] idNadadores)
        {
            SqlConnection con = new SqlConnection();
            con.ConnectionString = StringConexion; 
            SqlTransaction trans = null;
            con.Open();
            trans = con.BeginTransaction();
            try
            {
                for (int i = 0; i < idNadadores.Length; i++)
                {
                    Insertar(idClase, idNadadores[i],con, trans);
                }
                trans.Commit();
            }
            catch (Exception e)
            {
                if (trans != null)
                    trans.Rollback();

                throw new SqlExecutionException("Error al inscribir al nadador", e);
            }
            finally
            {
                if (con.State == ConnectionState.Open)
                    con.Close();
            }

        }


        public void Inscripcion(int idClase, int idNadadores)
        {
            SqlConnection con = new SqlConnection();
            con.ConnectionString = StringConexion;
            SqlTransaction trans = null;
            con.Open();
            trans = con.BeginTransaction();
            try
            {
               Insertar(idClase, idNadadores, con, trans);
                trans.Commit();
            }
            catch (Exception e)
            {
                if (trans != null)
                    trans.Rollback();

                throw new SqlExecutionException("Error al inscribir al nadador", e);
            }
            finally
            {
                if (con.State == ConnectionState.Open)
                    con.Close();
            }

        }

         public int Insertar (int idClase, int idNad, SqlConnection cn, SqlTransaction trans ) {
            
             string sql = "Insert into inscriptos_clases (id_clase, id_nadador) values (@IdCla, @IdNad); select @@identity;";
             SqlCommand cmd = new SqlCommand(sql, cn, trans);
             cmd.Parameters.Add(new SqlParameter("@IdCla", idClase));
             cmd.Parameters.Add(new SqlParameter("@IdNad", idNad));
             return Convert.ToInt32(cmd.ExecuteScalar());                
             
            }

         public DataTable ObtenerClases(int edadDesde, int edadHasta)
         {
             SqlConnection con = new SqlConnection();
             con.ConnectionString = StringConexion;
             con.Open();
             DataTable dt = new DataTable();
             string sql = "select c.id_clase, p.nombre, p.apellido, cl.razon_social,c.edad_minima,c.edad_maxima from clases c inner join profesores p on p.id_profesor=c.id_profesor inner join clubes cl on cl.id_club=c.id_club where c.edad_minima >= @edadDesde and c.edad_maxima <= @edadHasta ";
             SqlCommand cmd = new SqlCommand(sql,con);
             cmd.Parameters.Add(new SqlParameter("@edadDesde", edadDesde));
             cmd.Parameters.Add(new SqlParameter("@edadHasta", edadHasta));
             dt.Load(cmd.ExecuteReader());
             return dt;

         }

        public int ObtenerIdNadador(string nomb, string ape)
        {
            SqlConnection con = new SqlConnection();
            con.ConnectionString = StringConexion;
            con.Open();
            int idNadador;
            string sql = "select id_nadador from nadadores where upper(nombre) like upper(@nomb) and upper(apellido) like upper(@ape) ";
            SqlCommand cmd = new SqlCommand(sql,con);
            cmd.Parameters.Add(new SqlParameter("@nomb", nomb));
            cmd.Parameters.Add(new SqlParameter("@ape", ape));
            return Convert.ToInt32(cmd.ExecuteScalar());
        }

    }
    }


        

